package com.weed.pattern.strategy;

import java.util.List;

/**
 * 策略门面
 *
 * @author zhong.wang
 * @date 2024/10/22
 */
public interface StrategyManager<S extends Strategy> {

    /**
     * 新增策略
     * @param strategy 策略
     */
    void addStrategy(S strategy);

    /**
     * 新增策略
     * @param id
     * @param strategy
     */
    void addStrategy(String id,S strategy);

    /**
     * 根据策略id 获取策略
     *
     * @param provider 策略id
     * @return
     */
    S getStrategy(String provider);

    /**
     * 获取所有策略
     * @return
     */
    List<S> getStrategies();

    /**
     * 是否包含策略
     * @param provider
     * @return
     */
    boolean containStrategy(String provider);
}
